﻿using Dapper;
using System;
using System.Data;
using System.Drawing;

namespace 工业设备监控系统.DAL
{
    /// <summary>
    /// Dapper自定义类型处理器：转换Color与字符串
    /// </summary>
    public class ColorTypeHandler : SqlMapper.TypeHandler<Color>
    {
        // 从数据库读取时：字符串转Color
        public override Color Parse(object value)
        {
            try
            {
                string colorStr = value?.ToString() ?? "";
                if (string.IsNullOrEmpty(colorStr))
                    return Color.Gray;

                string[] parts = colorStr.Split(',');
                return Color.FromArgb(
                    byte.Parse(parts[0]),
                    byte.Parse(parts[1]),
                    byte.Parse(parts[2]),
                    byte.Parse(parts[3])
                );
            }
            catch
            {
                return Color.Gray;
            }
        }

        // 写入数据库时：Color转字符串（本示例主要用于查询，可简化实现）
        public override void SetValue(IDbDataParameter parameter, Color value)
        {
            parameter.Value = $"{value.A},{value.R},{value.G},{value.B}";
        }
    }
}
